Çàêðûòü îêíî
Ñïèñîê äðóãèõ äîêóìåíòîâ ÏÝÂÌ "Àãàò"
; Ïpèëoæeíèe 1 ; IOSUB : 21.03.1986 ; ; ÁAÇÈCHÛE ÏOÄÏPOÃPAMMÛ BBOÄA/BÛBOÄA ; OÁECÏE×ÈBAÞT EÄÈHÛE ÏPÈHÖÈÏÛ ÈCÏOËÜÇOBAHÈß ; KËABÈATÓPÛ È ÝKPAHA B CÈCTEME "ØKOËÜHÈÖA" ; ORG ¤1800 MAINFRAME ; ; (1) ÓÏPABËßÞÙÈE CÈMBOËÛ NORMCOL EQU ¤81 CT-A/0 INVCOL EQU ¤82 CT-B/. FLASHCOL EQU ¤83 CT-C/= STOPSYM EQU ¤84 CT-D/F1 DCCOD EQU ¤85 CT-E/F2 ICCOD EQU ¤86 CT-F/F3 BELLCOD EQU ¤87 CT-G LFCOD EQU ¤88 CT-H/<- LFEED EQU ¤8A CT-J HOMECOD EQU ¤8C CT-L RETURN EQU ¤8D CT-M REDCOL EQU ¤90 CT-P/1 GRNCOL EQU ¤91 CT-Q/2 YELCOL EQU ¤92 CT-R/3 BLUECOL EQU ¤93 CT-S/4 VIOLCOL EQU ¤94 CT-T/5 NAVYCOL EQU ¤9C CT-\/6 WHITCOL EQU ¤9D CT-]/7 RTCOD EQU ¤95 CT-U/-> INSCTRL EQU ¤96 CT-V CANCOD EQU ¤98 CT-X UPCOD EQU ¤99 CT-Y DNCOD EQU ¤9A CT-Z ESCCOD EQU ¤9B CT-[ EOLCOD EQU ¤9E CT-^/8 EOPCOD EQU ¤9F CT-_/9 ; CTRLCOL EQU ¤03 YELINV RED EQU 1 GREEN EQU 2 YELLOW EQU 3 BLUE EQU 4 VIOLET EQU 5 NAVY EQU 6 WHITE EQU 7 BIT3 EQU ¤2C ; (2) ÏOCTOßHHÛE ÏAPAMETPÛ ÄÈAËOÃA WNDLFT EQU ¤20 WNDWDTH EQU ¤21 WNDTOP EQU ¤22 WNDBTM EQU ¤23 CH EQU ¤24 CV EQU ¤25 BASL EQU ¤28 BASH EQU ¤29 BAS2L EQU ¤2A BAS2H EQU ¤2B SAVE EQU BAS2H CURSOR EQU ¤30 INVFLG EQU ¤32 PROMPT EQU ¤33 YSAV1 EQU ¤35 CSWL EQU ¤36 CSWH EQU ¤37 KSWL EQU ¤38 KSWH EQU ¤39 RNDL EQU ¤4E RNDH EQU ¤4F TXPAGE EQU ¤A6 ; (3) ÁÓÔEP BBOÄA IN EQU ¤200 ; (4)_AÏÏAPATHÛE KOHCTAHTÛ KBD EQU ¤C000 KBDSTRB EQU ¤C010 SPKR EQU ¤C030 KBDREG EQU ¤C063 DISPLAY EQU ¤C700 ; (5) BXOÄHÛE TO×KÈ ENTRY IRQ PEAKÖÈß IRQ ENTRY NMI PEAKÖÈß NMI ENTRY RESET PEAKÖÈß RESET ENTRY RDKEY1 BBOÄ CÈMBOËA ENTRY RDKEY C Ó-BA BBOÄA ENTRY KEYIN - C KËABÈATÓPÛ ENTRY STROBE - ÁEÇ KÓPCOPA ENTRY GETLNZ BBOÄ CTPOKÈ ENTRY GETLN ENTRY CROUT1 ÏC C O×ÈCTKOÉ XBOCTA CTPOKÈ ENTRY CROUT ÏC ÁEÇ O×ÈCTKÈ ENTRY COUT BÛBOÄ CÈMBOËA HA Ó-BO BÛBOÄA ENTRY COUT1 BÛBOÄ CÈMBOËA HA ÝKPAH ENTRY PRBYTE BÛBOÄ HEX-ÁAÉTA ENTRY PRHEX BÛBOÄ HEX-ÖÈÔPÛ ENTRY BS KÓPCOP HAÇAÄ ENTRY UP KÓPCOP BBEPX ENTRY VTAB HACTPOÉKA HA HA×AËO CTPOKÈ ENTRY VTABZ ENTRY HOME O×ÈCTKA ÝKPAHA TEK.ÖBETOM ENTRY CLREOP O×ÈCTKA XB. ÝKPAHA ENTRY CLEOP1 ENTRY CR ÏEPEBOÄ CTPOKÈ ENTRY LF KÓPCOP BHÈÇ ENTRY CLREOL O×ÈCTKA XB. CTPOKÈ ENTRY CLEOLZ ENTRY CLEOLZ1 ENTRY BELL ÇBOHOK ENTRY SETINV ÓCTAHOBKA ENTRY SETNORM ÖBETHOCTÈ ENTRY SETFLASH È ENTRY SETRED ÖBETOB ENTRY SETBLUE ENTRY SETVIOL ENTRY SETWHIT ENTRY SETGRN ENTRY SETNAVY ENTRY SETCOL ENTRY SCROLL ÝKPAH BBEPX ENTRY SETTXT ÓCT.ÝKPAHA B TEKCT. PEÆÈM ENTRY INIT ÓCTAHOBKA CTAHÄ. OKHA ENTRY SETWND ÓCTAHOBKA OKHA ENTRY TABV ENTRY RDCHAR BBOÄ C PACÏOÇHABAHÈEM ÓÏP. ENTRY BASCALC HACTPOÉKA CTPOKÈ ENTRY WAIT ÏAÓÇA ENTRY TRANSL ÏEPEKOÄ. HA BBOÄE ; ;_____INTERRUPTS ; *---IRQ-INTERRUPT-REQUEST EXTRN IRQREACT IRQ JMP IRQREACT *---NMI-NON-MASKABLE-INTERRUPTS EXTRN NMIREACT NMI JMP NMIREACT *---RESET EXTRN RESREACT RESET JMP RESREACT ; ;_____I/O_SUBROUTINES ; ;___READ_KEY RDKEY2 LDA #'^ DFB BIT3 RDKEY1 LDA #'_ STA CURSOR RDKEY JMP (KSWL) ;___GET_KEY_FROM_KEYBOARD KEYIN LDY CH LDA (BASL),Y STA YSAV1 EOR CURSOR STA SAVE KEYIN0 LDA (BASL),Y EOR SAVE STA (BASL),Y KEYIN1 INC RNDL BNE KEYIN2 INC RNDH LDA RNDH AND #¤3F BEQ KEYIN0 KEYIN2 LDA KBD BPL KEYIN1 JSR TRANSL LDY CH PHA LDA YSAV1 STA (BASL),Y PLA RTS ;---INPUT-WITHOUT-CURSOR STROBE BIT KBDSTRB STR LDA KBD BPL STR JMP TRANSL ;___GET_LINE NOTCR CMP #' BCC NOTCR3 CPX #¤FF BEQ GLBELL NOTCR3 JSR COUT CMP #LFCOD BEQ BCKSPC CMP #CANCOD BEQ CANCEL CMP #' BCC NXTCHAR NOTCR2 CPX #¤F8 BCC NOTCR1 GLBELL JSR BELL NOTCR1 INX BNE NXTCHAR DEX BNE NXTCHAR JMP CANCEL LDA #'\ JSR COUT GETLNZ JSR CROUT GETLN LDA PROMPT JSR COUT BIT KBDSTRB LDX #1 BCKSPC TXA BEQ GETLNZ DEX NXTCHAR JSR RDCHAR CMP #RTCOD BNE ADDINP LDA YSAV1 ADDINP CMP #INSCTRL BNE ADDINP1 JSR KEYIN !!! STA IN,X CMP #' BCS NOTCR CMP #RETURN BEQ CROUT1 CPX #¤FF BEQ GLBELL LDY INVFLG BMI NOTCR2 PHA LDA #CTRLCOL STA INVFLG PLA ORA #¤40 JSR COUT STY INVFLG BNE NOTCR2 JMP ADDINP1 STA IN,X CMP #RETURN BEQ CROUT1 JMP NOTCR CROUT1 JSR CLREOL CROUT LDA #RETURN ;___OUTPUT_CHARACTER COUT JMP (CSWL) ;___OUTPUT_CHAR_TO_SCREEN COUT1 STY YSAV1 PHA JSR VIDWAIT LDY YSAV1 PLA RTS ;___RECOGNIZE_VIDEO_CTRL_CODES VIDWAIT ORA #¤80 CMP #' BCS STORADV LDY #VIDSUB-VIDCTRL-1 VIDOUT1 CMP VIDCTRL,Y BEQ VIDOUT2 DEY BPL VIDOUT1 RTS VIDOUT2 LDA #<CR PHA LDA VIDSUB,Y PHA RTS JMP ;___PRINT_HEX_BYTE PRBYTE PHA LSR A LSR A LSR A LSR A JSR PRHEXZ PLA PRHEX AND #¤0F PRHEXZ ORA #¤B0 CMP #¤BA BCC JCOUT ADC #¤06 JCOUT JMP COUT ;___STORE_CHARACTER_TO_SCREEN STORADV LDY CH STA (BASL),Y INY LDA INVFLG BMI ADV2 STA (BASL),Y ADV1 INY ADV2 STY CH CPY WNDWDTH BCS CR RTS ;___MOVE_CURSOR_LEFT BS LDA INVFLG BMI BS1 DEC CH BS1 DEC CH BPL RTS4 LDY WNDWDTH LDA INVFLG BMI BS2 DEY BS2 DEY STY CH ;___MOVE_CURSOR_UP UP LDA WNDTOP CMP CV BCS RTS4 DEC CV ;___VERTICAL_TABULATE_CURSOR VTAB LDA CV VTABZ JSR BASCALC LDA BASL ADC WNDLFT STA BASL RTS4 RTS ;___ADVANCE_CURSOR ADVANCE LDY CH INY LDA INVFLG BMI ADV2 BPL ADV1 ;___CLEAR_SCREEN HOME LDA WNDTOP STA CV LDY #¤00 STY CH ;___CLEAR_END_OF_SCREEN CLREOP LDY CH LDA CV CLEOP1 PHA JSR VTABZ JSR CLEOLZ LDY #¤00 PLA ADC #¤00 C=1 CMP WNDBTM BCC CLEOP1 BCS VTAB ;___CARRIAGE_RETURN CR LDY KBD BPL NOWAIT CPY #' BNE NOWAIT BIT KBDSTRB KBDWAIT LDY KBD BPL KBDWAIT CPY #STOPSYM BEQ NOWAIT BIT KBDSTRB NOWAIT LDA #¤00 STA CH ;___LINE_FEED LF INC CV LDA CV CMP WNDBTM BCC VTABZ DEC CV JMP SCROLL ;___CLEAR_END_OF_LINE CLREOL LDY CH CLEOLZ LDA INVFLG CLEOLZ1 PHA LDA #' STA (BASL),Y INY PLA BIT INVFLG BMI CLEOLZ2 STA (BASL),Y INY CLEOLZ2 CPY WNDWDTH BCC CLEOLZ1 RTS ;___TOGGLE_SPKR_AT_1_KHZ_0.1_SEC BELL LDA #¤40 JSR WAIT LDY #¤C0 BELL2 LDA #¤0C JSR WAIT LDA SPKR DEY BNE BELL2 RTS ;----SET-COLORS SETINV LDA INVFLG AND #¤87 BNE STAFLAG SETNORM LDA INVFLG ORA #¤28 BNE STAFLAG SETFLASH LDA INVFLG AND #¤87 ORA #¤08 BNE STAFLAG SETRED LDA #RED DFB BIT3 SETBLUE LDA #BLUE DFB BIT3 SETVIOL LDA #VIOLET DFB BIT3 SETWHIT LDA #WHITE DFB BIT3 SETYEL LDA #YELLOW DFB BIT3 SETGRN LDA #GREEN DFB BIT3 SETNAVY LDA #NAVY SETCOL STA SAVE LDA INVFLG AND #¤F8 ORA SAVE STAFLAG STA INVFLG RTS ;___DELETE_CHARACTER DELCHAR LDY CH LDA INVFLG BMI DELCH64 BPL DELCH32 -JMP ;___INSERT_CHARACTER INSCHAR LDY WNDWDTH LDA INVFLG BMI INSCH64 BPL INSCH32 -JMP ;___ROLL_SCREEN_UP SCROLL LDA WNDTOP PHA JSR VTABZ SCRL1 LDA BASL STA BAS2L LDA BASH STA BAS2H LDY WNDWDTH DEY PLA ADC #¤01 CMP WNDBTM BCS SCRL3 PHA JSR VTABZ SCRL2 LDA (BASL),Y STA (BAS2L),Y DEY BPL SCRL2 BMI SCRL1 SCRL3 LDY #¤00 LDA INVFLG JSR CLEOLZ1 JMP VTAB * DELCH32 INY INY LDA (BASL),Y DEY DEY STA (BASL),Y INY CPY WNDWDTH BCC DELCH32 DEY LDA INVFLG STA (BASL),Y BNE DC2 -JMP * INSCH32 DEY DEY DEY LDA (BASL),Y INY INY STA (BASL),Y CPY CH BNE INSCH32 LDA #' STA (BASL),Y INY LDA INVFLG STA (BASL),Y RTS * INSCH64 DEY DEY LDA (BASL),Y INY STA (BASL),Y CPY CH BNE INSCH64 LDA #' STA (BASL),Y RTS * DELCH64 INY LDA (BASL),Y DEY STA (BASL),Y INY CPY WNDWDTH BCC DELCH64 DC2 DEY LDA #' STA (BASL),Y RTS ;___VIDEO_CONTROL_CODES VIDCTRL DFB ICCOD DFB DCCOD DFB NORMCOL DFB INVCOL DFB FLASHCOL DFB REDCOL DFB GRNCOL DFB YELCOL DFB VIOLCOL DFB NAVYCOL DFB BLUECOL DFB WHITCOL DFB RETURN DFB LFEED DFB LFCOD DFB RTCOD DFB UPCOD DFB DNCOD DFB HOMECOD DFB EOLCOD DFB EOPCOD DFB BELLCOD ;___VIDEO_CONTROL_SUBROUTINES VIDSUB DFB >INSCHAR-1 DFB >DELCHAR-1 DFB >SETNORM-1 DFB >SETINV-1 DFB >SETFLASH-1 DFB >SETRED-1 DFB >SETGRN-1 DFB >SETYEL-1 DFB >SETVIOL-1 DFB >SETNAVY-1 DFB >SETBLUE-1 DFB >SETWHIT-1 DFB >CR-1 DFB >CR-1 DFB >BS-1 DFB >ADVANCE-1 DFB >UP-1 DFB >LF-1 DFB >HOME-1 DFB >CLREOL-1 DFB >CLREOP-1 DFB >BELL-1 ;___SET_SCREEN_MODE SETTXT LDA INVFLG ASL A LDA TXPAGE ROR A ORA #¤02 TAY STA DISPLAY,Y RTS ;___SET_STANDARD_WINDOW INIT LDA #¤00 SETWND STA WNDTOP LDA #¤00 STA WNDLFT LDA #¤40 STA WNDWDTH LSR A STA WNDBTM LDA #¤1F TABV STA CV JMP VTAB ;___READ_CHAR,_RECOGNIZE_ESC ESCNEW JSR ESCOLD ESC JSR RDKEY2 CMP #RTCOD BEQ ESCNEW CMP #LFCOD BEQ ESCNEW CMP #UPCOD BEQ ESCNEW CMP #DNCOD BEQ ESCNEW ESCNOW JSR ESCOLD RDCHAR: JSR RDKEY1 CMP #ESCCOD BEQ ESC CMP #UPCOD BEQ ESCNOW CMP #DNCOD BEQ ESCNOW RDCHRTS RTS ESCOLD CMP #' BCS RDCHRTS JMP COUT ;___CALCULATE_BASE_ADDRESS BASCALC STA BASH LDA #¤00 LSR BASH ROR A LSR BASH ROR A STA BASL LDA TXPAGE ADC BASH STA BASH RTS ;__WAIT_(13+27/2*A+512*A*A-USEC) WAIT SEC WAIT2 PHA WAIT3 SBC #¤01 BNE WAIT3 PLA SBC #¤01 BNE WAIT2 RTS ;---TRANSLATE-SYMBOL TRANSL PHA LDA #¤50 JSR WAIT PLA BIT KBDSTRB CMP #¤C0 BCC TR2 BIT KBDREG BMI TR4 EOR #¤20 TR4 LDY #TABLE2-TABLE1-1 TR1 CMP TABLE1,Y BEQ TR3 DEY BPL TR1 TR2 RTS TR3 LDA TABLE2,Y RTS TABLE1 ASC "ÀÂÑÅÍÊÌÎÐÒÕ" TABLE2 ASC "ABCEHKMOPTX"